<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://www.workerman.net/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

use support\Log;
use support\Request;
use app\process\Http;
use Webman\GatewayWorker\Gateway;
use Webman\GatewayWorker\BusinessWorker;
use Webman\GatewayWorker\Register;
global $argv;

return [
    'webman' => [
        'handler' => Http::class,
        'listen' => 'http://0.0.0.0:8787',
        'count' => cpu_count() * 4,
        'user' => '',
        'group' => '',
        'reusePort' => false,
        'eventLoop' => '',
        'context' => [],
        'constructor' => [
            'requestClass' => Request::class,
            'logger' => Log::channel('default'),
            'appPath' => app_path(),
            'publicPath' => public_path()
        ]
    ],
    // File update detection and automatic reload
    'monitor' => [
        'handler' => app\process\Monitor::class,
        'reloadable' => false,
        'constructor' => [
            // Monitor these directories
            'monitorDir' => array_merge([
                app_path(),
                config_path(),
                base_path() . '/process',
                base_path() . '/support',
                base_path() . '/resource',
                base_path() . '/.env',
            ], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
            // Files with these suffixes will be monitored
            'monitorExtensions' => [
                'php', 'html', 'htm', 'env'
            ],
            'options' => [
                'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
                'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
            ]
        ]
    ],
    // 'websocket' => [
    //     'handler'     => Gateway::class,
    //     'listen'      => 'websocket://0.0.0.0:7272',
    //     'count'       => 2,
    //     'reloadable'  => false,
    //     'constructor' => ['config' => [
    //         'lanIp'           => '127.0.0.1',
    //         'startPort'       => 2300,
    //         'pingInterval'    => 25,
    //         'pingData'        => '{"type":"ping"}',
    //         'registerAddress' => '127.0.0.1:1236',
    //         'onConnect'       => function(){},
    //     ]]
    // ],
    // 'websocketworker' => [
    //     'handler'     => BusinessWorker::class,
    //     'count'       => cpu_count()*2,
    //     'constructor' => ['config' => [
    //         'eventHandler'    => plugin\webman\gateway\Events::class,
    //         'name'            => 'ChatBusinessWorker1',
    //         'registerAddress' => '127.0.0.1:1236',
    //     ]]
    // ],
    // 'websocketregister' => [
    //     'handler'     => Register::class,
    //     'listen'      => 'text://127.0.0.1:1236',
    //     'count'       => 1, // Must be 1
    //     'reloadable'  => false,
    //     'constructor' => []
    // ],

    // 'tcp' => [
    //     'handler'     => Gateway::class,
    //     'listen'      => 'tcp://0.0.0.0:8282',
    //     'count'       => 2,
    //     'reloadable'  => false,
    //     'constructor' => ['config' => [
    //         'lanIp'           => '127.0.0.1',
    //         'startPort'       => 4000,
    //         'pingInterval'    => 25,
    //         'pingData'        => '{"type":"ping"}',
    //         'registerAddress' => '127.0.0.1:1237',
    //         'onConnect'       => function(){},
    //     ]]
    // ],
    // 'tcpworker' => [
    //     'handler'     => BusinessWorker::class,
    //     'count'       => cpu_count()*2,
    //     'constructor' => ['config' => [
    //         'eventHandler'    => plugin\webman\gateway\EventsTcp::class,
    //         'name'            => 'ChatBusinessWorker2',
    //         'registerAddress' => '127.0.0.1:1237',
    //     ]]
    // ],
    // 'tcpregister' => [
    //     'handler'     => Register::class,
    //     'listen'      => 'text://127.0.0.1:1237',
    //     'count'       => 1, // Must be 1
    //     'reloadable'  => false,
    //     'constructor' => []
    // ], 
    // 'udp' => [
    //     'handler'     => Gateway::class,
    //     'listen'      => 'udp://0.0.0.0:6262',
    //     'count'       => 2,
    //     'reloadable'  => false,
    //     'constructor' => ['config' => [
    //         'lanIp'           => '127.0.0.1',
    //         'startPort'       => 6000,
    //         'pingInterval'    => 25,
    //         'pingData'        => '{"type":"ping"}',
    //         'registerAddress' => '127.0.0.1:1238',
    //         'onConnect'       => function(){},
    //     ]]
    // ],
    // 'udpworker' => [
    //     'handler'     => BusinessWorker::class,
    //     'count'       => cpu_count()*2,
    //     'constructor' => ['config' => [
    //         'eventHandler'    => plugin\webman\gateway\EventsUdp::class,
    //         'name'            => 'ChatBusinessWorker3',
    //         'registerAddress' => '127.0.0.1:1238',
    //     ]]
    // ],
    // 'udpregister' => [
    //     'handler'     => Register::class,
    //     'listen'      => 'text://127.0.0.1:1238',
    //     'count'       => 1, // Must be 1
    //     'reloadable'  => false,
    //     'constructor' =>  []
    // ],
    // 'mqtt' => [
    //     'handler'  => app\process\MqttClient::class
    // ],
];
